﻿using System;
using ControlCenter.Model;
using System.Collections.Generic;
using System.Threading.Tasks;
using ControlCenter.Model.BizEntities;
using ControlCenter.Model.WebApiDto;

namespace ControlCenter.ApplicationService
{
    /// <summary>
    /// 机器人服务类
    /// </summary>
    public interface IRobotService
    {
        /// <summary>
        /// 获取机器人列表
        /// </summary>
        /// <param name="paramDto">请求参数DTO</param>
        /// <returns></returns>
        Task<PagedData<RobotInfoDto>> Query(RobotQueryDto paramDto);

        /// <summary>
        /// 机器人注册/更新状态，如果数据库不存在机器人信息，则添加
        /// </summary>
        /// <param name="paramDto">请求参数DTO</param>
        /// <returns></returns>
        Task<bool> UpdateStatus(RobotUpdateStatusParamDto paramDto);

        /// <summary>
        /// 定时刷新机器人运行状态，运行状态的机器人或应用30秒内没有心跳/活动时将其状态更新为离线/未运行
        /// </summary>
        /// <returns></returns>
        Task RefreshWorkStatus();

        /// <summary>
        /// 启用/停用机器人
        /// </summary>
        /// <param name="paramDto"></param>
        /// <returns></returns>
        Task<Tuple<bool, string>> SwitchRobot(SwitchRobotRequestDto paramDto);

        /// <summary>
        /// 删除机器人，运行状态的不能删除（包括机器人和应用包）
        /// </summary>
        /// <param name="robotId"></param>
        /// <returns></returns>
        Task<Tuple<bool, string>> DeleteRobot(Guid robotId);

        /// <summary>
        /// 获取机器人信息
        /// </summary>
        /// <param name="robotId"></param>
        /// <returns></returns>
        Task<RobotInfo> GetRobot(Guid robotId);
    }
}
